//package com.xls.commonlibrary.ad.adn.tx.reward;
//
//import android.app.Activity;
//import android.text.TextUtils;
//import android.util.Log;
//import android.webkit.ValueCallback;
//import android.widget.Toast;
//
//import com.orhanobut.logger.Logger;
//import com.qq.e.ads.rewardvideo.RewardVideoAD;
//import com.qq.e.ads.rewardvideo.RewardVideoADListener;
//import com.qq.e.ads.rewardvideo.ServerSideVerificationOptions;
//import com.qq.e.comm.util.AdError;
//import com.xls.commonlibrary.ad.adn.tx.util.DownloadConfirmHelper;
//import com.xls.commonlibrary.ad.adn.reward.bean.AdBean;
//import com.xls.commonlibrary.constant.Const;
//import com.xls.commonlibrary.util.ICallback;
//import com.xls.commonlibrary.util.MMKVUtil;
//
//import java.util.Locale;
//import java.util.Map;
//
//// todo app下载安装功能需要集成
////https://developers.adnet.qq.com/doc/android/union/union_show_open_or_install_app_dialog
//
//public class TxRewardUtil {
//    private static volatile TxRewardUtil singleton = null;
//    private String TAG = "TXAdUtil";
//
//    private Activity activity;
//
//    private TxRewardUtil(Activity activity) {
//        this.activity = activity;
//    }
//
//    public static TxRewardUtil getInstance(Activity activity) {
//        if (singleton == null) {
//            synchronized (TxRewardUtil.class) {
//                if (singleton == null) {
//                    singleton = new TxRewardUtil(activity);
//                }
//            }
//        }
//        return singleton;
//    }
//
//
//    // tx ad 相关============================================
//    protected boolean mIsLoadSuccess;
//    private RewardVideoAD mRewardVideoAD;
//    private RewardVideoADListener adListener;
//    private boolean adLoaded = false;
//    private boolean videoCached = false;
//    private String mVerticalCodeId = "";
//    static ICallback mCallback;
//    private ValueCallback<String> callback;
//    private ValueCallback<AdBean> callbackShow;// 播放 专用回调   将AdBean回调到UI层
//    private boolean isShow = true; // 默认show广告，单纯取ecpm的时候，不show
//
//    private void callbackFail() {
//        callback("-1");
//    }
//
//    private void callback(String ecpm) {
//        if (callback != null) {
//            callback.onReceiveValue(ecpm);
//        }
//    }
//
//    // 获取腾讯广告
//    public void showTxAd() {
//        initTxAd();
////        Toaster.show("腾讯广告开始");
//        mRewardVideoAD.loadAD();
//    }
//
//    // just get ecpm
//    public void showTxAd(boolean isShow, ValueCallback<String> callback) {
//        this.callback = callback;
//        this.isShow = isShow;
//
//        showTxAd();
//    }
//
//    // show and get ecpm
//    public void showAd(ValueCallback<AdBean> callback) {
//        this.callbackShow = callback;
//        this.isShow = true;
//        showTxAd();
//    }
//
//    public void callbackShowSuccess() {// 播放成功回调
//        if (callbackShow == null) return;
//        // build AdBean for callback
//        AdBean bean = new AdBean();
//        bean.setShowSuccess(true);
//        bean.setEcpm(mRewardVideoAD.getECPM() + "");
//        bean.setAdn(Const.TYPE_TX);
//        bean.setAdType("激励视频");
//        callbackShow.onReceiveValue(bean);
//    }
//
//    public void callbackShowFail() {// 播放失败回调
//        if (callbackShow == null) return;
//        // build AdBean for callback
//        AdBean bean = new AdBean();
//        bean.setShowSuccess(false);
//        callbackShow.onReceiveValue(bean);
//    }
//
//
//    /**
//     * 上报给优量汇服务端在开发者客户端竞价中优量汇的竞价结果，以便于优量汇服务端调整策略提供给开发者更合理的报价
//     * <p>
//     * 优量汇竞价失败调用 sendLossNotification，并填入优量汇竞败原因（必填）、竞胜ADN ID（选填）、竞胜ADN报价（选填）
//     * 优量汇竞价胜出调用 sendWinNotification
//     * 请开发者如实上报相关参数，以保证优量汇服务端能根据相关参数调整策略，使开发者收益最大化
//     */
//    private void reportBiddingResult(RewardVideoAD rewardVideoAD) {
//        TXBiddingC2SUtils.reportBiddingWinLoss(rewardVideoAD);
//        if (TXBidUtil.isNeedSetBidECPM()) {
//            rewardVideoAD.setBidECPM(300);
//        }
//    }
//
//    void initTxAd() {
//
//        adListener = new RewardVideoADListener() {
//
//            // 2.设置监听器，监听广告状态
//
//            /**
//             * 广告加载成功，可在此回调后进行广告展示
//             **/
//            @Override
//            public void onADLoad() {
//                Logger.d("=====tx======onADLoad======");
//                adLoaded = true;
//                String msg = "load ad success ! adType=" + mRewardVideoAD.getRewardAdType();
//                // Toast.makeText(activity, msg, Toast.LENGTH_LONG).show();
//
//                //  自己的账号 没有数据看来
//                // eCPMLevel = , ECPM: -1 ,video duration = 25000, testExtraInfo:-1, request_id:hned7abf6wc3c01
//                if (mRewardVideoAD.getRewardAdType() == RewardVideoAD.REWARD_TYPE_VIDEO) {//0
//                    Log.d(TAG, "eCPMLevel = " + mRewardVideoAD.getECPMLevel() + ", ECPM: " + mRewardVideoAD.getECPM()
//                            + " ,video duration = " + mRewardVideoAD.getVideoDuration()
//                            + ", testExtraInfo:" + mRewardVideoAD.getExtraInfo().get("mp")
//                            + ", request_id:" + mRewardVideoAD.getExtraInfo().get("request_id"));
//                    // toast msg
//                    String m = "time:" + System.currentTimeMillis()
//                            + "\n ECPM: " + mRewardVideoAD.getECPM()
//                            + "\n eCPMLevel: " + mRewardVideoAD.getECPMLevel()
//                            + "\n video duration = " + mRewardVideoAD.getVideoDuration()
//                            + "\n testExtraInfo:" + mRewardVideoAD.getExtraInfo().get("mp")
//                            + "\n request_id:" + mRewardVideoAD.getExtraInfo().get("request_id");
//
//
//                    // 显示ecpm
//                    // Toaster.show(m);
//
//
//                    // fixme 经常-1 tx 不知道什么鬼
////                    ECPM: -1
////                    eCPMLevel:
////                    video duration = 29000
////                    testExtraInfo:-1
////                    request_id:rj4ojnm4nz2ay01
//
////                    if (callback != null) {
////                        int ecpm = mRewardVideoAD.getECPM();
////                        if (ecpm > 0){
////                            callback(ecpm + "");
////                        }else {
////                            // -1就是失败了
////                            callbackFail();
////                        }
////                    }
//
//                    // todo save msg to ObjectBox db then show in RV or LV
//
//
//                    // todo save to db
//                    //  TXDBUtil.putReward(mRewardVideoAD);
//
//                } else if (mRewardVideoAD.getRewardAdType() == RewardVideoAD.REWARD_TYPE_PAGE) {//1
//                    Log.d(TAG, "eCPMLevel = " + mRewardVideoAD.getECPMLevel()
//                            + ", ECPM: " + mRewardVideoAD.getECPM()
//                            + ", testExtraInfo:" + mRewardVideoAD.getExtraInfo().get("mp")
//                            + ", request_id:" + mRewardVideoAD.getExtraInfo().get("request_id"));
//                }
//
//                // app 下载监听  sdk‘s 代码
//                if (DownloadConfirmHelper.USE_CUSTOM_DIALOG) {
//                    mRewardVideoAD.setDownloadConfirmListener(DownloadConfirmHelper.DOWNLOAD_CONFIRM_LISTENER);
//                }
//
//                // 任何getRewardAdType类型 都要回调了
//                if (callback != null) {
//                    int ecpm = mRewardVideoAD.getECPM();
//                    if (ecpm > 0) {
//                        callback(ecpm + "");
//                    } else {
//                        // -1就是失败了
//                        callbackFail();
//                    }
//                }
//
//
//                reportBiddingResult(mRewardVideoAD);
//                mIsLoadSuccess = true;
//
//                if (isShow && TXBidUtil.isAdValid(true, mRewardVideoAD != null && mRewardVideoAD.isValid(), true)) {
//                    mRewardVideoAD.showAD();
//                }
//
//
//            }
//
//            /**
//             * 视频素材缓存成功，可在此回调后进行广告展示
//             */
//            @Override
//            public void onVideoCached() {
//                videoCached = true;
//                Log.i(TAG, "onVideoCached");
//
//                Logger.d("=====tx======onVideoCached======");
//
//            }
//
//            /**
//             * 激励视频广告页面展示
//             */
//            @Override
//            public void onADShow() {
//                Log.i(TAG, "onADShow");
//            }
//
//            /**
//             * 激励视频广告曝光
//             */
//            @Override
//            public void onADExpose() {
//                Log.i(TAG, "onADExpose");
//            }
//
//            /**
//             * 激励视频触发激励（观看视频大于一定时长或者视频播放完毕）
//             *
//             * @param map 若选择了服务端验证，可以通过 ServerSideVerificationOptions#TRANS_ID 键从 map 中获取此次交易的 id；若未选择服务端验证，则不需关注 map 参数。
//             */
//            @Override
//            public void onReward(Map<String, Object> map) {
//                Log.i(TAG, "onReward " + map.get(ServerSideVerificationOptions.TRANS_ID));  // 获取服务端验证的唯一 ID
//            }
//
//            /**
//             * 激励视频广告被点击
//             */
//            @Override
//            public void onADClick() {
//                Log.i(TAG, "onADClick");
//            }
//
//            /**
//             * 激励视频播放完毕
//             */
//            @Override
//            public void onVideoComplete() {
//                Log.i(TAG, "onVideoComplete");
//
//                callbackShowSuccess();
//            }
//
//            /**
//             * 激励视频广告被关闭
//             */
//            @Override
//            public void onADClose() {
//                Log.i(TAG, "onADClose");
//
//                callbackShowSuccess();
//
////                if (mCallback != null) {
////                    mCallback.callback();
////                }
//            }
//
//            /**
//             * 广告流程出错
//             */
//            @Override
//            public void onError(AdError adError) {
//                String msg = String.format(Locale.getDefault(), "onError, error code: %d, error msg: %s",
//                        adError.getErrorCode(), adError.getErrorMsg());
//                // Toast.makeText(activity, msg, Toast.LENGTH_LONG).show();
//                Logger.d("======txad======onError========" + msg);
//                // error code: 2001, error msg: 可能由于SDK版本较低，
//                // 或系统应用不支持插件导致，可以将SDK升级至最新版本。如在进行通路测试或者仍未解决，请至反馈中心提交工单联系技术支持处理。
//
//                callbackFail();
//                callbackShowFail();
//            }
//        };
//        String adId = MMKVUtil.getInstance().getKV().decodeString(Const.KEY_AD_ID_TX);
//        mVerticalCodeId = adId;
//
//        if (TextUtils.isEmpty(adId)) {
////        默认demo的appId
////            kv.encode(Const.KEY_AD_ID_TX, "5082873307844506");
//            // 测试id
//            //mVerticalCodeId = "5082873307844506";
//
//            // 正式id
//            mVerticalCodeId = "7056148074886616";
//        }
//
//        String token = "W8IBAi-KLvqjcBVAwt0FFQyV9PV18BQ3WJ3vbYcnRPAOQXE6cXnnmwodsCXSzthjyEd6OMWjVYTBbtNC9ehlxcxjhmxhDyd-vZoayupdTMtIrPb9nTpa06z5ksXtqthymIPW8HrgjnFnPvC7IZAVkxStrscvjaiYzqXGCcKkLRzHILtqVgGIkwUM6bTfdE6SQkcUVg";
//        // 直接传token不行，需要先get tx token
//        //mRewardVideoAD = new RewardVideoAD(this, mVerticalCodeId, adListener,true,token); // 有声播放
//        mRewardVideoAD = new RewardVideoAD(activity, mVerticalCodeId, adListener); // 有声播放
//    }
//
//    void showAd() {
//        // 3.展示广告
//        if (adLoaded) {//广告展示检查1：广告成功加载，此处也可以使用videoCached来实现视频预加载完成后再展示激励视频广告的逻辑
//            if (!mRewardVideoAD.hasShown()) {//广告展示检查2：当前广告数据还没有展示过
//                //广告展示检查3：展示广告前判断广告数据未过期
//                if (mRewardVideoAD.isValid()) {
//                    mRewardVideoAD.showAD();
//                } else {
//                    Toast.makeText(activity, "激励视频广告已过期，请再次请求广告后进行广告展示！", Toast.LENGTH_LONG).show();
//                }
//            } else {
//                Toast.makeText(activity, "此条广告已经展示过，请再次请求广告后进行广告展示！", Toast.LENGTH_LONG).show();
//            }
//        } else {
//            Toast.makeText(activity, "成功加载广告后再进行广告展示！", Toast.LENGTH_LONG).show();
//        }
//    }
//
//    // tx ad 相关============================================
//
//}
